package team.nine.kuaichezuche.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .cors()
            .and()
            .csrf().disable() // 禁用CSRF保护，简化开发
            .authorizeRequests()
                // 允许预检请求
                .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
                // 允许所有请求访问验证码相关API，不需要认证
                .antMatchers("/api/verification/**").permitAll()
                // 允许所有请求访问静态资源
                .antMatchers("/css/**", "/js/**", "/images/**", "/favicon.ico").permitAll()
                // 允许所有请求访问登录、注册和令牌验证API
                .antMatchers("/api/auth/**").permitAll()
                // 放行车辆提交接口（前端添加车辆）
                .antMatchers("/api/vehicle/**").permitAll()
                // 放行车辆查询接口（主页车辆列表/搜索/详情）
                .antMatchers("/api/cars/**").permitAll()
                // 放行用户车辆相关接口
                .antMatchers("/api/user/**").permitAll()
                // 放行订单相关接口
                .antMatchers("/api/order/**").permitAll()
                // 其他所有请求都需要认证
                .anyRequest().authenticated()
            .and()
                // 使用基本认证
                .httpBasic();
    }
}